package com.company.myfirstjmixproject.screen.user;

import com.company.myfirstjmixproject.entity.User;
import io.jmix.ui.UiComponents;
import io.jmix.ui.component.Component;
import io.jmix.ui.component.FileStorageResource;
import io.jmix.ui.component.Image;
import io.jmix.ui.navigation.Route;
import io.jmix.ui.screen.*;
import org.springframework.beans.factory.annotation.Autowired;

@UiController("User.browse")
@UiDescriptor("user-browse.xml")
@LookupComponent("usersTable")
@Route("users")
public class UserBrowse extends StandardLookup<User> {

    @Autowired
    private UiComponents uiComponents;

    /**
     * Install 注解表示该方法是一个代理（delegate）：一个UI组件（这个case中是表格）会在生命周期的某个阶段调用该方法
     * 这个特殊的代理（列生成器）接受一个实体实例参数，该实例在表格中的一行显示
     *
     * @param user
     * @return
     */
    @Install(to = "usersTable.picture", subject = "columnGenerator")
    private Component usersTablePictureColumnGenerator(User user) {

        if (user.getPicture() != null) {
            // 图片组件痛殴保存在User实体picture属性中的文件引用从文件存储获取要显示的内容
            Image image = uiComponents.create(Image.class);
            image.setScaleMode(Image.ScaleMode.CONTAIN);
            image.setSource(FileStorageResource.class)
                    .setFileReference(user.getPicture());
            image.setWidth("30px");
            image.setHeight("30px");
            // 列生成器代理返回列单元格需要展示的可视化组件
            return image;
        } else {
            return null;
        }
    }


}